package cn.ac.sec.liquid.common.interceptor;

import cn.ac.sec.liquid.common.model.User;

import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.core.Controller;

/**
 * 控制层全局拦截器:调用每个action前都会调用
 */
public class GlobalActionInterceptor implements Interceptor {

	public void intercept(Invocation invocation) {    	
		if (invocation.getActionKey().equals("/login")||invocation.getActionKey().equals("/formLogin")) { //获取当前拦截到的方法
			invocation.invoke(); //invocation.invoke()就是通知接着干下面的事情
		} else {
			Controller cont = invocation.getController();
			User user = cont.getSessionAttr("login_user"); //在拦截器中获取session变量的方法，不同于action中
			if (user != null) {
				System.out.println("GlobalActionInterceptor.intercept() 当前登录用户: " + user.getUsername());
				invocation.invoke(); //继续执行
			} else {
				System.out.println("用户未登录，跳转到登录界面");
				invocation.getController().redirect("/login");  
			}
		}
	}
}
